package com.jmu.power.config;

/**
 * @author fems
 * @version 1.0
 * @description TODO
 * @date 2024/7/18 15:01
 */
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;

import lombok.extern.slf4j.Slf4j;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
import java.util.List;


/**
 * 多租户处理插件
 *
 * @author tangling
 * @date 2021/04/26 13:37
 */
@Slf4j
public class CustomTenantLineHandler implements TenantLineHandler {

    /**
     * 用户对应租户信息缓存key
     */
    public static final String TENANT_CASE_KEY = "TENANT_CASE_KEY";

    /**
     * 忽略添加租户ID的表
     */

    /**
     * 获取租户ID值表达式
     *
     * @return
     */
    @Override
    public Expression getTenantId() {
        //租户Id，可以从缓存或者cookie，token等中获取
        return new LongValue(returnTenantId());
    }

    /**
     * 获取租户字段名(数据库的租户ID字段名)
     *
     * @return
     */
    @Override
    public String getTenantIdColumn() {
        return "tenant_id";
    }

    /**
     * 根据表名判断是否忽略拼接多租户条件
     *
     * @param tableName
     * @return
     */
    @Override
    public boolean ignoreTable(String tableName) {
        return false;
    }

    /**
     * 从请求中获取到token，从token中解析出tenantId
     *
     * @return
     */
    public Long returnTenantId() {
        //初始化值，保存程序正常启动
        Long tenantId = 1L;
        //从请求头中获取token

        return tenantId;
    }
}
